package com.qk.controller;

import com.qk.common.PageResult;
import com.qk.common.Result;
import com.qk.dto.ClueDto;
import com.qk.dto.MarkFalseClueDto;
import com.qk.entity.Clue;
import com.qk.service.ClueService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.time.LocalDateTime;
import java.util.List;

@Slf4j
@RestController
@RequestMapping("/clues")
public class ClueController {
        @Autowired
        private ClueService clueService;
        public Result addClue(@RequestBody Clue clue){
            log.info("新添线索{}", clue);
            clue.setCreateTime(LocalDateTime.now());
            clue.setUpdateTime(LocalDateTime.now());
            clueService.save(clue);
            return Result.success();

        }
        //线索列表查询
        @GetMapping
        public Result list(ClueDto clueDto){
            log.info("查询参数{}", clueDto);
            PageResult<Clue> pageResult = clueService.listClues(clueDto);
            return Result.success(pageResult);
        }
        //线索路径
        @PutMapping("/assign/{clueId}/{userId}")
        public Result assign(@PathVariable Integer clueId,@PathVariable Integer userId){
                log.info("分配线索{},{}",clueId,userId);
                Clue clue = new Clue();
                clue.setId(clueId);
                clue.setUserId(userId);
                clue.setStatus(2);
                clue.setUpdateTime(LocalDateTime.now());
                clueService.updateById(clue);
                return Result.success();
        }
        //根据ID查询
        @GetMapping("/{id}")
        public Result getClueById(@PathVariable Integer id){
                log.info("查询id{}",id);
                Clue clue = clueService.getClueById(id);
                return Result.success(clue);
        }
        //跟进线索
        @PutMapping
        public Result trackClue(@RequestBody Clue clue){
                log.info("线索跟进{}", clue);
                clueService.updateClueById(clue);
                return Result.success();
        }
        //伪线索处理
        @PutMapping("/false/{id}")
        public Result falseClue(@PathVariable Integer id, @RequestBody MarkFalseClueDto markFalseClueDto){
                log.info("伪线索处理{}",id,markFalseClueDto);
                clueService.upClueById(id,markFalseClueDto);
                return Result.success();
        }
        //转商机
        @PutMapping("/toBusiness/{id}")
        public Result toBusiness(@PathVariable Integer id){
                log.info("转商机{}",id);
                clueService.toBusiness(id);
                return Result.success();
        }
        //线索池查询
        @GetMapping("/pool")
        public Result listPool(ClueDto clueDto){
                log.info("线索池查询{}",clueDto);
                PageResult<Clue> pageResult = clueService.selectPoolClues(clueDto);
                return Result.success(pageResult);
        }

}
